Skip to content

feat: add agent-led OpenHands Enterprise Replicated install skill - #458

Open
rajshah4 wants to merge 9 commits into
OpenHands:mainfrom
rajshah4:skill/install-openhands-replicated
Open

feat: add agent-led OpenHands Enterprise Replicated install skill#458
rajshah4 wants to merge 9 commits into
OpenHands:mainfrom
rajshah4:skill/install-openhands-replicated

Conversation

@rajshah4

@rajshah4 rajshah4 commented Aug 5, 2026

Copy link
Copy Markdown
Member

HUMAN: I reviewed the revised skill workflow, current documentation alignment, safety boundaries, generated requests, and preflight behavior.

  • A human has tested these changes.

Why

Operators need an agent workflow for supported OpenHands Enterprise VM installations without maintaining a second copy of fast-changing sizing tables, field catalogs, and installer screens. The skill should add safety gates, reusable checks, and completion evidence around the authoritative documentation.

Summary

  • adds a customer-neutral workflow for Replicated Embedded Cluster VM installations
  • synchronizes the workflow with the latest available OpenHands Enterprise installation documentation
  • keeps official docs and the customer installer dashboard authoritative for release-specific details
  • makes failed-install troubleshooting read-only by default
  • adds scoping decisions, explicit mutation approvals, executable preflights, support escalation, end-to-end validation, and handoff evidence
  • removes 151 net lines of duplicated product documentation from the latest revision

Issue Number

Fixes #518

How to Test

npm run build:skills
uv run python scripts/sync_extensions.py --check
uvx --from 'git+https://github.com/agentskills/agentskills.git#subdirectory=skills-ref' \
  skills-ref validate skills/install-openhands-replicated
uv run --group test pytest -q

Expected result: the skill validator passes and the repository suite reports 780 passed, 14 skipped.

Also verify that:

  1. the read-only Kubernetes warning is prominent in SKILL.md;
  2. scripts/apply_kots_config.sh fails closed without Support attestation and explicit execution flags;
  3. support-bundle routing matches the current VM log-collection documentation;
  4. the skill links to current installation, sizing, Admin Console, sandbox, troubleshooting, and log-collection pages;
  5. the install plan and operator requests contain no credentials or fixed production values.

Video/Screenshots

Not applicable; this PR adds a text-based skill, scripts, references, and generated catalog metadata.

Notes

The official Enterprise documentation and customer installer dashboard remain the source of truth for release-specific values and UI steps. This skill focuses on decisions, safety gates, reusable checks, and completion evidence.

Current documentation:

This pull request was updated by an AI agent (OpenHands) on behalf of Rajiv Shah.

Co-authored-by: openhands <openhands@all-hands.dev>
@rajshah4 rajshah4 changed the title Add agent-led OpenHands Enterprise Replicated install skill feat: add agent-led OpenHands Enterprise Replicated install skill Aug 5, 2026
@github-actions github-actions Bot added the type: feat A new feature label Aug 5, 2026
rajshah4 and others added 2 commits August 11, 2026 06:58
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
@rajshah4
rajshah4 marked this pull request as ready for review August 11, 2026 12:02
@all-hands-bot

Copy link
Copy Markdown
Contributor

👋 This PR needs a couple of things fixed before OpenHands can review it:

  • the PR description's HUMAN: section needs at least 20 characters describing what you tested, not just the template placeholder

Push an update once this is addressed and this check re-runs automatically.

This is an automated check - no AI was used to generate this comment.

@all-hands-bot

Copy link
Copy Markdown
Contributor

🤖 OpenHands is reviewing this PR.

Head commit: d0aa0b1e7994893840b9ee702f2f7d8b59764f9e
View the conversation: https://oss-agent-canvas.ngrok.dev/conversations/e23f5ae7-799a-407c-8e18-40601018b3f5

This comment was posted by an AI agent (OpenHands).

@all-hands-bot all-hands-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This review was created by an AI agent (OpenHands) on behalf of the repository maintainers.

Summary

This PR adds install-openhands-replicated, a well-structured skill for guiding OpenHands Enterprise VM installations through Replicated Embedded Cluster. The skill covers preflight checks, infrastructure provisioning, installer execution, Admin Console configuration, validation, and operator handoff.

The safety contract is strong: all mutating operations require explicit approval, secrets are treated as sensitive throughout, and the skill explicitly does not claim headless installation. The progressive disclosure structure (SKILL.md entry point + references/ + scripts/) follows the AgentSkills standard. The marketplace registration, vendor symlinks, and catalog updates are consistent with the repo conventions.

Risk Assessment: LOW

The skill is documentation and read-only preflight scripts. The main correctness issue (missing curl availability check) affects a preflight script but does not modify state. All mutating operations are gated behind explicit approval. No secrets are hardcoded.

Findings

Correctness

  1. check_outbound.sh does not verify curl is installed (line 35): If curl is missing, code is an empty string, [[ "${code}" == "000" ]] is false, and every URL reports OK - a false negative that could allow proceeding with installation without verifying outbound connectivity. The other preflight scripts guard their dependencies (check_tls_files.sh checks for openssl on line 42, summarize_terraform_outputs.sh checks for terraform on line 16). Consider adding command -v curl at the top and exiting with a clear error if missing. Additionally, even when curl is installed but fails before producing a status code, the empty string passes the check - consider also failing on empty code.

Minor

  1. apply_kots_config.sh preview description is slightly misleading (line 8): The usage text says "Previews a KOTS ConfigValues merge by default" but the preview (lines 159-169) only prints the command that would be executed; it does not show the resulting merged configuration. An agent following the skill might assume the preview shows a diff. Consider clarifying the usage text to say the preview prints the command to be run.

  2. check_dns.sh nslookup fallback has inconsistent output (line 55): The getent and dig branches capture output and re-print it with printf, but the nslookup branch runs the command directly, producing verbose unstructured output to stdout. This is a UX inconsistency, not a correctness issue (the exit-code check correctly detects resolution failures).

Positive observations

  • Explicit approval gates for all mutating operations (installer, ConfigValues, deployments, provider setup, restores)
  • Private key hashes are unset after comparison in check_tls_files.sh (line 84)
  • Temp files in check_tls_files.sh are cleaned up via trap cleanup EXIT
  • Storage guard correctly detects emptyDir/hostPath volumes that could lose state
  • No em-dashes in new content (follows repo punctuation convention)
  • Correct environment category and valid marketplace entry
  • Good separation of concerns: read-only preflights vs. mutating helpers
  • Blue/green reinstall reference explicitly requires separate approval

Comment thread skills/install-openhands-replicated/scripts/check_outbound.sh
Comment thread skills/install-openhands-replicated/scripts/apply_kots_config.sh Outdated
Comment thread skills/install-openhands-replicated/scripts/check_dns.sh Outdated
Co-authored-by: openhands <openhands@all-hands.dev>
@all-hands-bot

Copy link
Copy Markdown
Contributor

🤖 OpenHands is reviewing this PR.

Head commit: a06523559260b5c4fbf3af16b3c9648f625f42e9
View the conversation: https://oss-agent-canvas.ngrok.dev/conversations/35d98edf-6462-4294-b3c3-6302d420691e

This comment was posted by an AI agent (OpenHands).

@all-hands-bot all-hands-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This review was created by an AI agent (OpenHands) on behalf of the repository maintainers.

Summary

This PR adds install-openhands-replicated, a customer-neutral skill for guiding OpenHands Enterprise VM installations through Replicated Embedded Cluster. The safety contract is strong: all mutating operations require explicit approval, secrets are treated as sensitive throughout, and the skill explicitly does not claim headless installation. The progressive disclosure structure (SKILL.md + references/ + scripts/) and marketplace registration follow the repo conventions.

Risk Assessment: LOW

The skill is documentation plus read-only preflight scripts. No mutating operations are automated. No secrets are hardcoded. The one material finding is a preflight reliability bug in check_outbound.sh.

Findings

Correctness

  1. check_outbound.sh does not verify curl is installed (inline comment on line 35): If curl is missing, the || true on the command-substitution line swallows the failure, code is empty, [[ "${code}" == "000" ]] is false, and every URL reports OK - a false positive that could lead an operator to proceed with installation without verifying outbound connectivity. The other preflight scripts guard their dependencies (check_tls_files.sh checks openssl, summarize_terraform_outputs.sh checks terraform, apply_kots_config.sh and preflight_storage_guard.sh detect kubectl). Consider adding command -v curl at the top and exiting with a clear error if missing. Additionally, failing on empty code (not just "000") would harden the check against curl failures that occur before a status code is produced.

This was noted in a prior review against an earlier commit and appears to still be present at the current head.

Comment thread skills/install-openhands-replicated/scripts/check_outbound.sh
rajshah4 and others added 2 commits August 14, 2026 10:14
Merge current main, default fresh installs to Simple hostname mode, and address review feedback.

Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
@all-hands-bot

Copy link
Copy Markdown
Contributor

🤖 OpenHands is reviewing this PR.

Head commit: a4ffdad0da58a2a9a0c28d248a5f6eed46e723c7
View the conversation: https://oss-agent-canvas.ngrok.dev/conversations/de2b85ad-1506-4d2f-96be-ab212c5621e0

This comment was posted by an AI agent (OpenHands).

@all-hands-bot all-hands-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This review was created by an AI agent (OpenHands) on behalf of the repository maintainers.

Summary

This PR adds install-openhands-replicated, a well-structured skill for guiding OpenHands Enterprise VM installations through Replicated Embedded Cluster. The safety contract is strong: all mutating operations require explicit approval, secrets are treated as sensitive throughout, and the skill explicitly does not claim headless installation.

The previous review's material finding (missing curl guard and empty-status-code false positive in check_outbound.sh) has been addressed at the current head. The script now checks command -v curl (lines 9-12) and fails on both empty and 000 status codes (line 49).

All 12 bash scripts pass bash -n syntax checks. Marketplace registration, skills/index.js, and the README catalog are consistent and correctly regenerated. The environment category count and total extension count are accurate.

Risk Assessment: LOW

The skill is documentation plus read-only preflight scripts. No mutating operations are automated. No secrets are hardcoded. Command construction in apply_kots_config.sh uses arrays (no shell injection). Private key hashes in check_tls_files.sh are unset after comparison and temp files are cleaned via trap.

Findings

No material issues found. The previous review's findings have been resolved.

@jpelletier1

Copy link
Copy Markdown
Contributor

@rajshah4 can you resolve the merge conflicts and then I will approve

rajshah4 and others added 2 commits August 26, 2026 12:45
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
@all-hands-bot

all-hands-bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🚦 CI is currently failing on this PR's latest commit.

Please fix the failing checks before OpenHands reviews it - this is re-checked automatically once you push a new commit. (A maintainer can also request @all-hands-bot as a reviewer to have it reviewed regardless of CI status.)

This is an automated check - no AI was used to generate this comment.

Co-authored-by: openhands <openhands@all-hands.dev>
@rajshah4

Copy link
Copy Markdown
Member Author

Merge conflicts are resolved. Current main (806dfe5) is an ancestor of head e945ed6; the resolution is preserved in merge commit ede5d47, and all four inline review threads are resolved.

I also updated the PR description to the required template and linked #518. A maintainer must add the enhancement label to #518; its body now meets the enhancement readiness criteria, after which automation can add ready-for-dev and refresh the PR gate.

This comment was generated by an AI agent (OpenHands) on behalf of Rajiv Shah.

@jpelletier1
jpelletier1 self-requested a review August 26, 2026 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add workflow-first Enterprise VM installation skill

3 participants